// pages/select-product/index.js
Page({
    data: {
        ips: [], // IP列表
        selectedIp: null, // 选择的IP ID
        selectedIpName: '', // 选择的IP名称
        series: [], // 系列列表
        selectedSeries: null, // 选择的系列ID
        selectedSeriesName: '', // 选择的系列名称
        products: [], // 产品列表
        selectedProducts: [], // 已选择的产品列表
        isLoading: true, // 加载状态
        loadingText: '加载中...' // 加载提示文本
    },

    onLoad() {
        // 从本地存储获取已选择的产品
        const selectedProducts = wx.getStorageSync('selectedProducts') || [];
        this.setData({
            selectedProducts
        });
        this.loadIpList();
    },


    // 加载数据
    loadIpList() {
        const that = this;
        wx.showLoading({
            title: '加载中...',
            mask: true
        });

        wx.cloud.callFunction({
            name: 'getIpList',
        }).then(res => {
            wx.hideLoading();
            console.log(res);
            if (res.result && res.result.success) {
                // 成功获取IP列表
                let newArr = res.result.data.filter(item => {
                    return item.id != 'other'
                })
                that.setData({
                    ips: newArr
                });
            } else {
                wx.showToast({
                    title: '获取IP列表失败',
                    icon: 'none'
                });
            }
        }).catch(err => {
            wx.hideLoading();
            console.error('调用云函数失败', err);
            wx.showToast({
                title: '网络错误，请稍后再试',
                icon: 'none'
            });
        });
    },
    // 获取系列列表
    loadSeriesList: function (ipId) {
        const that = this;
        wx.showLoading({
            title: '加载中...',
            mask: true
        });

        wx.cloud.callFunction({
            name: 'getSeriesList',
            data: {
                ipId: ipId
            },
            success: (res) => {
                wx.hideLoading();
                if (res.result && res.result.success) {
                    // 成功获取系列列表
                    that.setData({
                        series: res.result.data,
                        products: [],
                        selectedSeries: '',
                        selectedSeriesName: '',
                    });
                } else {
                    wx.showToast({
                        title: '获取系列列表失败',
                        icon: 'none'
                    });
                }
            },
            fail: (err) => {
                wx.hideLoading();
                console.error('调用云函数失败', err);
                wx.showToast({
                    title: '网络错误，请稍后再试',
                    icon: 'none'
                });
            }
        });
    },

    // 获取产品列表
    loadProductList: function (seriesId) {
        const that = this;

        wx.showLoading({
            title: '加载中...',
            mask: true
        });

        wx.cloud.callFunction({
            name: 'getProductList',
            data: {
                seriesId: seriesId
            },
            success: (res) => {
                wx.hideLoading();

                if (res.result && res.result.success) {
                    // 成功获取产品列表
                    that.setData({
                        products: res.result.data,
                    });
                } else {
                    wx.showToast({
                        title: '获取产品列表失败',
                        icon: 'none'
                    });
                }
            },
            fail: (err) => {
                wx.hideLoading();
                console.error('调用云函数失败', err);
                wx.showToast({
                    title: '网络错误，请稍后再试',
                    icon: 'none'
                });
            }
        });
    },
    // 选择IP
    selectIp(e) {
        console.log(e);
        const ipId = e.currentTarget.dataset.ipId;
        const ipName = e.currentTarget.dataset.ipName;

        this.setData({
            selectedIp: ipId,
            selectedIpName: ipName,
            selectedSeries: null,
            selectedSeriesName: '',
            products: []
        });
        this.loadSeriesList(ipId);
    },

    // 选择系列
    selectSeries(e) {
        console.log(e);
        const seriesId = e.currentTarget.dataset.seriesId;
        const seriesName = e.currentTarget.dataset.seriesName;

        this.setData({
            selectedSeries: seriesId,
            selectedSeriesName: seriesName
        });
        this.loadProductList(seriesId);
    },

    // 切换产品选择状态
    toggleProduct(e) {
        console.log(e);
        const productId = e.currentTarget.dataset.productId;
        const productName = e.currentTarget.dataset.productName;

        const isSelected = this.data.selectedProducts.some(product => product.productId === productId);

        if (isSelected) {
            // 移除已选产品
            const selectedProducts = this.data.selectedProducts.filter(product => product.productId !== productId);
            this.setData({
                selectedProducts
            });
        } else {
            // 添加新选产品
            const newProduct = {
                ipId: this.data.selectedIp,
                ipName: this.data.selectedIpName,
                seriesId: this.data.selectedSeries,
                seriesName: this.data.selectedSeriesName,
                productId,
                productName
            };

            const selectedProducts = [...this.data.selectedProducts, newProduct];
            this.setData({
                selectedProducts
            });
        }
    },

    // 移除已选产品
    removeProduct(e) {
        console.log(e);
        const index = e.currentTarget.dataset.index;
        const selectedProducts = [...this.data.selectedProducts];
        selectedProducts.splice(index, 1);
        this.setData({
            selectedProducts
        });
    },

    // 检查产品是否已选
    isProductSelected(productId) {
        return this.data.selectedProducts.some(product => product.productId === productId);
    },

    // 保存已选产品
    saveSelectedProducts() {
        if (this.data.selectedProducts.length === 0) {
            wx.showToast({
                title: '请至少选择一个产品',
                icon: 'none'
            });
            return;
        }

        // 保存选择的产品到本地存储
        wx.setStorageSync('selectedProducts', this.data.selectedProducts);

        // 返回发帖页面
        wx.navigateBack();
    }
});